package com.yupi.yupicturebackend.model.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * NFT资产实体
 *
 * @author yupi
 */
@TableName(value = "nft_asset")
@Data
public class NFTAsset implements Serializable {

    /**
     * 主键ID
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * NFT唯一标识
     */
    private String nftId;

    /**
     * 代币ID
     */
    private String tokenId;

    /**
     * 合约地址
     */
    private String contractAddress;

    /**
     * 区块链网络
     */
    private String network;

    /**
     * NFT名称
     */
    private String name;

    /**
     * NFT描述
     */
    private String description;

    /**
     * 创作者
     */
    private String creator;

    /**
     * 创作者地址
     */
    private String creatorAddress;

    /**
     * 当前拥有者
     */
    private String currentOwner;

    /**
     * 拥有者地址
     */
    private String ownerAddress;

    /**
     * 用户ID（系统内部）
     */
    private Long userId;

    /**
     * 原图片URL
     */
    private String imageUrl;

    /**
     * IPFS图片哈希
     */
    private String imageHash;

    /**
     * 元数据URL
     */
    private String metadataUrl;

    /**
     * IPFS元数据哈希
     */
    private String metadataHash;

    /**
     * 交易哈希
     */
    private String transactionHash;

    /**
     * 版税比例 (基点，10000=100%)
     */
    private Integer royaltyBps;

    /**
     * 版税接收地址
     */
    private String royaltyRecipient;

    /**
     * 是否可交易
     */
    private Boolean tradeable;

    /**
     * 是否可转移
     */
    private Boolean transferable;

    /**
     * 稀有度等级
     */
    private String rarity;

    /**
     * 系列/集合名称
     */
    private String collection;

    /**
     * 标签 (JSON格式)
     */
    private String tags;

    /**
     * NFT属性 (JSON格式)
     */
    private String attributes;

    /**
     * 铸造成本
     */
    private BigDecimal mintCost;

    /**
     * Gas费用
     */
    private BigDecimal gasFee;

    /**
     * 当前价格
     */
    private BigDecimal currentPrice;

    /**
     * 价格货币单位
     */
    private String priceCurrency;

    /**
     * 最后交易价格
     */
    private BigDecimal lastTradePrice;

    /**
     * 最后交易时间
     */
    private Date lastTradeTime;

    /**
     * 浏览次数
     */
    private Long viewCount;

    /**
     * 点赞次数
     */
    private Long likeCount;

    /**
     * NFT状态 (minting, active, trading, burned)
     */
    private String status;

    /**
     * 区块确认数
     */
    private Integer confirmations;

    /**
     * 市场链接
     */
    private String marketplaceUrl;

    /**
     * 扩展信息 (JSON格式)
     */
    private String extendInfo;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 是否删除
     */
    @TableLogic
    private Integer isDelete;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}
